[build] Generate cross-platform Selenium Manager SBOM and NOTICE - #17819
Conversation
…he Rust release job
PR Summary by QodoGenerate Selenium Manager SBOM and third-party NOTICE in Rust CI release flow
AI Description
Diagram
High-Level Assessment
Files changed (3)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewPrevious review resultsReview updated until commit c422d4b Results up to commit ced7673
|
|
Code review by qodo was updated up to the latest commit 919d2ad |
|
Code review by qodo was updated up to the latest commit c422d4b |
There was a problem hiding this comment.
Pull request overview
This PR adds release-time generation of license-compliance artifacts for Selenium Manager (a CycloneDX SBOM and a consolidated third-party NOTICE), produced in CI and attached to the selenium_manager_artifacts release alongside the binaries.
Changes:
- Introduces
cargo-aboutconfiguration (rust/about.toml) and a NOTICE rendering template (rust/about.hbs). - Adds a dedicated
sbomjob to.github/workflows/ci-rust.ymlto generate and uploadselenium-manager.cdx.jsonandselenium-manager-THIRD-PARTY-NOTICES.txt. - Extends the
releasejob to depend onsbom, include SBOM/NOTICE SHA256s inlatest.json, and attach both files to the release.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| rust/about.toml | Adds cargo-about license acceptance/config to drive NOTICE generation. |
| rust/about.hbs | Adds a cargo-about Handlebars template to render a consolidated NOTICE with license texts. |
| .github/workflows/ci-rust.yml | Adds SBOM/NOTICE generation + upload and includes these artifacts in the release + latest.json hashes. |
Comments suppressed due to low confidence (1)
.github/workflows/ci-rust.yml:246
Cargo.tomlincludes a Windows-only dependency ([target.'cfg(windows)'.dependencies] winapi = ...), but the NOTICE generation here runscargo aboutwithout any target selection. Unlesscargo-aboutis configured to resolve all shipped targets, the generatedselenium-manager-THIRD-PARTY-NOTICES.txtcan omit target-gated crates (and their attributions), diverging from the SBOM and from the PR's stated goal of a cross-platform NOTICE.
cargo cyclonedx --format json --all-features --target all
cargo about generate about.hbs > selenium-manager-THIRD-PARTY-NOTICES.txt
💥 What does this PR do?
Generates two license-compliance artifacts once per release, alongside the Selenium Manager binaries, in a dedicated
sbomjob inci-rust.yml(uploaded as an artifact; thereleasejob only gathers and publishes):selenium-manager.cdx.json— CycloneDX SBOMselenium-manager-THIRD-PARTY-NOTICES.txt— third-party attributioncargo resolves the crate closure for every shipped platform in a single invocation, so one SBOM/NOTICE covers all targets (including Windows-only
winapi/windows-*). Generating where the binary is built keeps the artifacts in lockstep with what actually ships. Their sha256s are added tolatest.jsonand both files are attached to theselenium_manager_artifactsrelease.🔧 Implementation Notes
rust/about.tomlpins all six shipped triples so the NOTICE matches the SBOM;rust/about.hbsrenders deduplicated attribution.cargo cyclonedx --target alland cargo-about (notargetsfilter) each resolve every platform's crates, sowinapi/windows-*are included; cargo-about fails the job if any crate's license isn't in the accepted list.🤖 AI assistance
💡 Additional Considerations
Part 1 of 2. Bazel must download these from a release that already contains them, so the download + packaging wiring follows in a second PR once this has published one release. Tool versions (
cargo-cyclonedx,cargo-about) are pinned and may need a bump.🔄 Types of changes